這篇文章主要是將前幾篇關於matplotlib的概念
實際應用在資料上
畫出各種的圖表
會搭配不同的參數調整表現出來的圖
文章分成4個部分
分別是
這裡延續前面pandas練習過的資料庫
從kaggle上找到的關於學生成績的紀錄
先引入所有要使用到的套件pandas
, numpy
,matplotlib
把這筆資料列印部分出來
看看資料的架構長怎樣
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv("StudentsPerformance.csv")
df.head()
先來看看這筆資料的整體資訊
df.info()
可以看到整筆資料的所有欄位、是否有缺失值跟資料的物件型態
資料裡有1000筆紀錄
現在若是想要知道不同組別佔整體資料的比例
最適用的圖形是使用圓餅圖
先將資料利用分組聚合函數.groupby()
分組
並且利用.count()
計算各組的數量
group = df.groupby("race/ethnicity").count() r
接下來將想要計算的類別跟數值分別用list裝起來
category = list(group.index) #設置類別的list
amounts = list(group["gender"]) #設置各類別數量的list
print(category, amounts)
# ['group A', 'group B', 'group C', 'group D', 'group E'] [89, 190, 319, 262, 140]
最後繪製圓餅圖,並且利用參數autopct="%0.2f%%"
設定出現在圖上的比例數據
也使用.title()
設定圖表的標題
plt.pie(amounts, labels=category,autopct="%0.2f%%")
plt.title("portion of groups")
圖表就順利做出來了!
可以清楚地看到各組所佔的比例
使用同樣的方法製作不同性別的佔比圓餅圖
gender = df.groupby("gender").count() # 按照性別分組,並計算各組數量
type_of_gender = list(gender.index) # 將性別的名稱放到list
numbers_of_gender = list(gender["lunch"]) # 將各組的數量放進去list
plt.pie(numbers_of_gender, labels=type_of_gender,autopct="%0.2f%%") #作圖
plt.title("portion of gender") # 設置標題
在折線圖的應用上
適合用在同類的數據變化
所以這裡我選擇'race/ethnicity'裡面的group b作為比較的依據
首先先將屬於group b類型的資料打包成獨立的dataframe
group_b = df[df['race/ethnicity']=="group B"].dropna()
print(group_b)
可以看到整理過後的資料只剩group B的資料
只剩下190筆數據
但是標籤還是依照原本1000筆的排序
現在想替在group B的人重新標index
先重設index,利用default產生從0-189的標籤
group_b = group_b.reset_index()
group_b
再刪掉右移一欄的index欄位
del group_b["index"]
group_b
可以看到資料重新被整理好
接下來就可以利用group B的學生成績分布製作折線圖
先看數學成績的折線圖
group_b.plot(y=["math score"],figsize=(25,5))
可以看到第1位到第190位學生的數學成績分布
現在可以在同一張圖上疊加reading的成績分布
group_b.plot(y=["math score","reading score"],figsize=(25,5))
這幾篇文章大致上介紹了matplotlib這個套件的操作
加上實際資料的操作
已經對將資料利用圖表視覺化有了一定程度的了解
明天會進行更多的繪圖練習
利用調整參數進行更多元的圖形展現方式